~ functional code represents the problem in pure functions; interpreter runs the side effects ~ if a function must have a side effect, make it affect its parent object